package nk;

import java.util.*;

/**
 * 题目描述
 * <p>
 * 数据表记录包含表索引和数值（int范围的整数），请对表索引相同的记录进行合并，即将相同索引的数值进行求和运算，输出按照key值升序进行输出。
 * 输入描述:
 * <p>
 * 先输入键值对的个数
 * 然后输入成对的index和value值，以空格隔开
 * <p>
 * 输出描述:
 * <p>
 * 输出合并后的键值对（多行）
 */
public class IndexAndNum {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextLine()) {
            int count = Integer.parseInt(sc.nextLine());
            TreeMap<Integer, Integer> map = new TreeMap<>();
            for (int i = 0; i < count; i++) {
                String s = sc.nextLine();
                String[] s1 = s.split(" ");

                int key = Integer.parseInt(s1[0]);
                int value = Integer.parseInt(s1[1]);

                if (map.containsKey(key)) {
                    map.put(key, map.get(key) + value);
                } else {
                    map.put(key, value);
                }
            }
            sortAndPrint(map);
        }
    }

    private static void sortAndPrint(TreeMap<Integer, Integer> map) {
        //遍历map
        for (Integer key : map.keySet()) {
            System.out.println(key + " " + map.get(key));
        }
    }
}
